package fr.mairie.parc.dao.impl;

import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

import fr.mairie.parc.dao.CommandeDao;
import fr.mairie.parc.dao.mapper.CommandeRowMapper;
import fr.mairie.parc.domain.Commande;

public class CommandeDaoImpl implements CommandeDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;

	@Autowired
	public void setDataSource(DataSource dataSource) {
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

	public JdbcTemplate getJdbcTempalete() {
		return jdbcTemplate;
	}

	@Autowired
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}


	@SuppressWarnings("unchecked")
	@Override
	public List<Commande> selectAll() {
		return jdbcTemplate.query("SELECT * FROM commande",
				new CommandeRowMapper());
	}

	@Override
	public Commande getCommandeById(int id) {
		return (Commande) jdbcTemplate.queryForObject("SELECT * FROM commande WHERE idCommande=?",
				new Object [] {id},
				new CommandeRowMapper());
	}

	public void addCommande(Commande commande){
		jdbcTemplate.update("INSERT INTO commande (quantite, dateCommande, numDevis, fournisseur, materiel, marque, modele, stock, prix, commentaire)" +
							"VALUES (?,?,?,?,?,?,?,?,?,?)",
                new Object [] {
							   commande.getQuantite(),
							   commande.getDateCommande(),
							   commande.getNumDevis(),
                               commande.getFournisseur(),
                               commande.getMateriel(),
                               commande.getMarque(),
							   commande.getModele(),
							   commande.getStock(),
							   commande.getPrix(),
							   commande.getCommentaire()
                               });
	}

	public void updateCommande (Commande commande){
		jdbcTemplate.update("UPDATE commande SET  etat=? , dateLivraison = ? WHERE idCommande = ? ",
                new Object [] {
							   commande.getEtat(),
							   commande.getDateLivraison(),
							   commande.getIdCommande()});
	}

}
